const http = require('http');
const fs = require('fs');
const path = require('path');

// 获取命令行参数
const args = process.argv.slice(2);
const fileName = args[0];

// 创建HTTP服务器
const server = http.createServer((req, res) => {
  console.log(`收到请求: ${req.method} ${req.url}`);
  
  // 设置响应头
  res.writeHead(200, {
    'Content-Type': 'text/plain; charset=utf-8',
    'Access-Control-Allow-Origin': '*'
  });
  
  // 确定要读取的文件
  let targetFile;
  if (fileName) {
    // 如果传入了命令行参数，检查文件是否存在
    targetFile = fileName;
    if (!fs.existsSync(targetFile)) {
      const errorMsg = `错误：文件 ${targetFile} 不存在！`;
      console.error(errorMsg);
      res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
      res.end(errorMsg);
      return;
    }
  } else {
    // 如果没有传入参数，默认读取当前文件
    targetFile = __filename; // fileReader1.js
  }
  
  console.log(`正在读取文件: ${targetFile}`);
  
  // 使用 fs.readFile 读取文件
  fs.readFile(targetFile, 'utf8', (err, data) => {
    if (err) {
      console.error('读取文件时出错:', err);
      res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
      res.end('读取文件时出错: ' + err.message);
      return;
    }
    
    console.log('文件读取成功，响应到浏览器');
    res.end(data);
  });
});

// 监听8081端口
const PORT = 8081;
server.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
  if (fileName) {
    console.log(`将读取文件: ${fileName}`);
  } else {
    console.log('将读取当前文件: fileReader1.js');
  }
  console.log('请在浏览器中访问该地址查看文件内容');
});

// 处理服务器错误
server.on('error', (err) => {
  console.error('服务器错误:', err);
});
